
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2008, Adam Kubach
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

#include "MinervaQt/Plugins/GeoRSSQt/AddGeoRSSLayerWidget.h"
#include "ui_AddGeoRSSLayerWidget.h"

#include "Minerva/Qt/Tools/Color.h"

#include <limits>

///////////////////////////////////////////////////////////////////////////////
//
//  Constructor.
//
///////////////////////////////////////////////////////////////////////////////

AddGeoRSSLayerWidget::AddGeoRSSLayerWidget ( QWidget *parent ) : BaseClass ( parent ),
  _impl ( new Ui::AddGeoRSSLayerWidget )
{
  // Initialize code from designer.
  _impl->setupUi ( this );
  
  // Set default color.
  _impl->_colorButton->color ( QColor ( 255, 0, 0, 255 ) );
  
  _impl->_maximumItemsSpinBox->setRange ( 0, std::numeric_limits<int>::max() );
  _impl->_maximumItemsSpinBox->setValue ( std::numeric_limits<int>::max() );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor.
//
///////////////////////////////////////////////////////////////////////////////

AddGeoRSSLayerWidget::~AddGeoRSSLayerWidget()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the url.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::url ( const std::string&  s )
{
  _impl->_urlEdit->setText ( s.c_str() );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the url.
//
///////////////////////////////////////////////////////////////////////////////

std::string AddGeoRSSLayerWidget::url() const
{
  return _impl->_urlEdit->text().toStdString();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the refresh rate.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::refreshRate ( double  d )
{
  _impl->_refreshRate->setValue( d );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the refresh rate.
//
///////////////////////////////////////////////////////////////////////////////

double AddGeoRSSLayerWidget::refreshRate() const
{
  return _impl->_refreshRate->value();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the enable filtering flag.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::enableFiltering ( bool b )
{
  _impl->_enableFiltering->setChecked ( b );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the enable filtering flag.
//
///////////////////////////////////////////////////////////////////////////////

bool AddGeoRSSLayerWidget::enableFiltering() const
{
  return Qt::Checked == _impl->_enableFiltering->checkState();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the element.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::element ( const std::string&  s )
{
  _impl->_elementFilter->setText ( s.c_str() );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the element.
//
///////////////////////////////////////////////////////////////////////////////

std::string AddGeoRSSLayerWidget::element() const
{
  return _impl->_elementFilter->text().toStdString();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the value.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::value ( const std::string& s )
{
  _impl->_valueFilter->setText ( s.c_str() );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the value.
//
///////////////////////////////////////////////////////////////////////////////

std::string AddGeoRSSLayerWidget::value() const
{
  return _impl->_valueFilter->text().toStdString();
}
                                         

///////////////////////////////////////////////////////////////////////////////
//
//  Set the color.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::color ( const Usul::Math::Vec4f& c )
{
  _impl->_colorButton->color ( Minerva::QtTools::Color<Usul::Math::Vec4f>::convert ( c ) );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the color.
//
///////////////////////////////////////////////////////////////////////////////

Usul::Math::Vec4f AddGeoRSSLayerWidget::color()  const
{
  return Minerva::QtTools::Color<Usul::Math::Vec4f>::convert ( _impl->_colorButton->color() );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the maximum number of items.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::maximumItems ( unsigned int value )
{
  _impl->_maximumItemsSpinBox->setValue ( value );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the maximum number of items.
//
///////////////////////////////////////////////////////////////////////////////

unsigned int AddGeoRSSLayerWidget::maximumItems() const
{
  return _impl->_maximumItemsSpinBox->value();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the maximum age of items.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::maximumAge ( double days )
{
  _impl->_maximumItemAge->setValue ( days );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the maximum age of items.
//
///////////////////////////////////////////////////////////////////////////////

double AddGeoRSSLayerWidget::maximumAge() const
{
  return _impl->_maximumItemAge->value();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the use regular expression flag.
//
///////////////////////////////////////////////////////////////////////////////

void AddGeoRSSLayerWidget::useRegEx ( bool b )
{
  _impl->_useRegEx->setChecked ( b );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the use regular expression flag.
//
///////////////////////////////////////////////////////////////////////////////

bool AddGeoRSSLayerWidget::useRegEx() const
{
  return Qt::Checked == _impl->_useRegEx->checkState();
}
